www.gusucode.com > VC++迷宫游戏源代码源码程序 > VC++迷宫游戏源代码源码程序\code\WinGame 2.7\WorkThread.cpp
// WorkThread.cpp: implementation of the CWorkThread class. // Download by http://www.NewXing.com ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "WorkThread.h" #include "WinGame.h" #include "./include/Key.h" #include "Rabbit.h" #include "./Include/AnimCtrl.h" #include "AnimDate.h" #include "PreRabbit.h" #include "CreateMap.h" #include "./Include/Thread.h" //====================================================================================== CAnimCtrl BkAnim1,BkAnim2; //背景图片控制 CAnimCtrl foregroundAnim; //前景图片控制 CAnimCtrlEx LeftExit,RightExit; //游戏前奏上的左右出口标志 CAnimCtrlEx Cloudy; //播放云雾效果 CPreRabbit PreRabbit; //游戏前奏中的兔子 CRabbit MyRabbit; //兔子控制 CMazeView MazeView; //迷宫视野控制 unsigned int g_I=0; //全局计数器 //================================================================================== DWORD WorkFun(void*,CThread*p) { CBmp24* pBmp; int m_State=PRE_GAME_INIT; LoadAnimDate(); Sleep(30); ClearAllKey(); while(!p->IsStop()) { ReadKey(); switch(m_State) { case PRE_GAME_INIT://游戏前奏初始画 g_AnimList.ClearAllAnim(); PreRabbit.New(&DownWaitBmp,288,230); PreRabbit.SetHide(1); PreRabbit.SetDepth(1);//设置图片的显示的深度 BkAnim1.New(&BkBmp,0,100); BkAnim2.New(&BkBmp,320,100); BkAnim2.SetFlip(1); LeftExit.New(&LeftExitBmp,-5,240,g_LeftExitFrm,FRAME_REPEAT); RightExit.New(&LeftExitBmp,590,240,g_LeftExitFrm,FRAME_REPEAT); Cloudy.New(&CloudyBmp,0,0,g_CloudyFrm,FRAME_PLAY_ONCE); Cloudy.SetHide(1); RightExit.SetFlip(1); g_MemDC.FadeOut(); m_State=CLOUDY_PLAY_INIT; break; case CLOUDY_PLAY_INIT://雨雾效果初始化 Cloudy.SetHide(0); m_State=CLOUDY_PLAY; break; case CLOUDY_PLAY://播放云雾效果之后,显示兔子 if(Cloudy.Play(0)) { Cloudy.Delete(); PreRabbit.SetHide(0); m_State=PRE_GAME_PLAY; } break; case PRE_GAME_PLAY://游戏前奏 LeftExit.Play(0); RightExit.Play(0); if(PreRabbit.Play(0)) { m_State=MAZE_GAME_INIT; g_MemDC.FadeIn(); } break; case MAZE_GAME_INIT://迷宫游戏初始化 g_AnimList.ClearAllAnim(); MazeView.New(g_MazeWidth,g_MazeHeight);//视野类里创建了迷宫,和迷宫出口等 MyRabbit.New(&DownWaitBmp,g_MazeWidth,g_MazeHeight,&MazeView);//自己控制的兔子 foregroundAnim.New(&foregroundBmp,0,0);//罩在地图上的框图 g_MemDC.FadeOut(); m_State=MAZE_GAME_PLAY; break; case MAZE_GAME_PLAY://控制兔子走迷宫 MazeView.Play(0);//其实,视野在播放迷宫出口的动画 if(MyRabbit.Play(0))//控制兔子走迷宫 { m_State=PRE_GAME_INIT; g_MemDC.FadeIn(); } break; } //===========刷新画面==================================================== pBmp=g_MemDC.GetBmp(); g_AnimList.ShowAllAnim(pBmp);//将所有的动画图片都先画到g_MemDC的m_ScreenBmp g_MemDC.Draw();//画到m_hMemDC //=============全局计数器================================================== g_I++; if(g_I>0xfffe) g_I=0; } return 0; }